]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
layout: Move showing the stage and the startup-prepared signal
authorJasper St. Pierre <jstpierre@mecheye.net>
Wed, 6 Mar 2013 22:55:33 +0000 (17:55 -0500)
committerJasper St. Pierre <jstpierre@mecheye.net>
Thu, 7 Mar 2013 21:35:36 +0000 (16:35 -0500)
Waiting until we're idle means nothing if we're constructing
complex actors.

https://bugzilla.gnome.org/show_bug.cgi?id=694321

js/ui/layout.js
js/ui/main.js

index 6ca5d841fa518913df137b09b4a2687f1b456758..b04cb5a362998384f8f50013f87a03419892e83c 100644 (file)
@@ -231,6 +231,8 @@ const LayoutManager = new Lang.Class({
         Main.overview.connect('showing', Lang.bind(this, this._overviewShowing));
         Main.overview.connect('hidden', Lang.bind(this, this._overviewHidden));
         Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
+
+        this._prepareStartupAnimation();
     },
 
     _overviewShowing: function() {
@@ -547,7 +549,7 @@ const LayoutManager = new Lang.Class({
     // MetaBackgroundActor inside global.window_group covers the entirety of the
     // screen. So, we set no_clear_hint at the end of the animation.
 
-    prepareStartupAnimation: function() {
+    _prepareStartupAnimation: function() {
         // Set ourselves to FULLSCREEN input mode while the animation is running
         // so events don't get delivered to X11 windows (which are distorted by the animation)
         global.stage_input_mode = Shell.StageInputMode.FULLSCREEN;
@@ -585,25 +587,25 @@ const LayoutManager = new Lang.Class({
                                                       Lang.bind(this, function() {
                                                           this._systemBackground.disconnect(signalId);
                                                           this._systemBackground.actor.show();
+                                                          global.stage.show();
+
+                                                          this.emit('startup-prepared');
 
                                                           // We're mostly prepared for the startup animation
                                                           // now, but since a lot is going on asynchronously
-                                                          // during startup, let's defer emission of the
-                                                          // startup-prepared signal until the event loop is
-                                                          // uncontended and idle. This helps to prevent us
-                                                          // from running the animation when the system is
-                                                          // bogged down
+                                                          // during startup, let's defer the startup animation
+                                                          // until the event loop is uncontended and idle.
+                                                          // This helps to prevent us from running the animation
+                                                          // when the system is bogged down
                                                           GLib.idle_add(GLib.PRIORITY_LOW,
                                                                         Lang.bind(this, function() {
-                                                                                      this.emit('startup-prepared');
-                                                                                      return false;
-                                                                                  }));
-
+                                                                            this._startupAnimation();
+                                                                            return false;
+                                                                        }));
                                                       }));
     },
 
-    startupAnimation: function() {
-        global.stage.show();
+    _startupAnimation: function() {
         if (Main.sessionMode.isGreeter)
             this._startupAnimationGreeter();
         else
index b7a412c91ed07d24f112415bb65d3b361c5e4ef5..f727a661bd0208f389b7aed02c4160f5f7a6d018 100644 (file)
@@ -153,7 +153,6 @@ function _initializeUI() {
     componentManager = new Components.ComponentManager();
 
     layoutManager.init();
-    layoutManager.prepareStartupAnimation();
     overview.init();
 
     global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
@@ -192,9 +191,6 @@ function _initializeUI() {
     ExtensionDownloader.init();
     ExtensionSystem.init();
 
-    layoutManager.connect('startup-prepared', function() {
-                              layoutManager.startupAnimation();
-                          });
     layoutManager.connect('startup-complete', function() {
                               if (keybindingMode == Shell.KeyBindingMode.NONE) {
                                   keybindingMode = Shell.KeyBindingMode.NORMAL;